www.gusucode.com > 无线传感器网络定位算法 matlab源代码 包含七个算法matlab源码程序 > Localization/Localization Error/calculate_localization_error.m
function [Localization_error,Unresolve_num]=calculate_localization_error() % 画出定位算法的定位结果图 % 锚节点不存在定位误差,用红色*表示, % 未知节点有的能被定位(蓝色O表示这些节点的估计位置,蓝色-表示这些节点的估计位置到真实位置的误差) % 未知节点有的不能被定位(黑色O表示,这些节点不存在定位误差) % Localization_error:平均定位误差--估计位置到真实位置的欧式距离与通信半径的比值 % Unresolved_num:网络中有些孤立点或者因为邻居较少不能被定位,这些点的数目 %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ load result.mat; figure; hold on; box on; plot(all_nodes.true(1:all_nodes.anchors_n,1),all_nodes.true(1:all_nodes.anchors_n,2),'r*');%the anchors Unresolved_unknown_nodes_index=find(all_nodes.anc_flag==0);%the unresolved unknown nodes Unresolved_num=length(Unresolved_unknown_nodes_index); plot(all_nodes.true(Unresolved_unknown_nodes_index,1),all_nodes.true(Unresolved_unknown_nodes_index,2),'ko'); resolved_unknown_nodes_index=find(all_nodes.anc_flag==2);%estimated locations of the resolved unkonwn nodes plot(all_nodes.estimated(resolved_unknown_nodes_index,1),all_nodes.estimated(resolved_unknown_nodes_index,2),'bo'); plot(transpose([all_nodes.estimated(resolved_unknown_nodes_index,1),all_nodes.true(resolved_unknown_nodes_index,1)]),... transpose([all_nodes.estimated(resolved_unknown_nodes_index,2),all_nodes.true(resolved_unknown_nodes_index,2)]),'b-'); axis auto; title('定位误差图'); try %画出规则分布的网格线 x=0:all_nodes.grid_L:all_nodes.square_L; set(gca,'XTick',x); set(gca,'XTickLabel',num2cell(x)); set(gca,'YTick',x); set(gca,'YTickLabel',num2cell(x)); grid on; catch %none end %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ disp('~~~~~~~~~~~~~~~~~~~~~~~~定位误差图~~~~~~~~~~~~~~~~~~~~~~~~~~'); disp('红色*表示锚节点'); disp('蓝色O表示未知节点的估计位置'); disp('黑色O表示不能被定位的未知节点'); disp('蓝色-表示未知节点的定位误差(连接未知节点的估计位置和真实位置)'); disp(['一共',num2str(all_nodes.nodes_n),'个节点:',num2str(all_nodes.anchors_n),'个锚节点,',... num2str(all_nodes.nodes_n-all_nodes.anchors_n),'个未知节点,',num2str(Unresolved_num),'个不能被定位的未知节点']); Localization_error=sum(sqrt(sum(transpose((all_nodes.estimated(resolved_unknown_nodes_index,:)-all_nodes.true(resolved_unknown_nodes_index,:)).^2))))/... (length(resolved_unknown_nodes_index)*comm_r); disp(['定位误差为',num2str(Localization_error)]); end